#include<iostream>
using namespace std;
//auto的使用限制 
//不能作为函数的参数使用
//因为只有在函数调用时候彩绘给参数赋值，auto要求必须给修饰的参数赋值，所以不能使用
// int func(auto a ,auto b)
// {
//     cout << "a = " << a << endl;
//     cout << "b = " << b <<endl;
// }
//不能用于类的非静态成员变量初始化
class Test
{
    //auto v1 = 0;//不能用于非静态成员变量初始化
    //static auto v2 = 0;//类的静态非常量成员不允许在类内部直接初始化
    static const auto v3 = 0;//ok
};
//不能使用auto来定义新的数组
int func1()
{
    int array[] = {0,1,2,3,4};
    auto &a = array;//a被推导为int*
    // auto array[] = {0, 1, 2, 3, 4}; 不能用于定义新的数组
    //auto t2[] = array;无法定义新数组

}
//无法通过auto推导出模板参数
template<class T>
struct Test1
{
    /* data */
};
int func()
{
    Test1<double> t;
    //Test<auto> t1 = t;无法推导出模板类型
    return 0;
}

int main()
{

    return 0;
}
